home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / GMS / GMSDev / Source / E / Screens / DoubleBuffer.e next >
Encoding:
Text File  |  1998-03-16  |  1.7 KB  |  60 lines

  1. /* Name:      Double Buffering
  2. ** Author:    Paul Manias
  3. ** Copyright: DreamWorld Productions (c) 1996-1998.  Freely distributable.
  4. **
  5. ** This just shows how to double buffer the screen.  You can also try out
  6. ** triple buffering just by changing the DBLBUFFER flag to TPLBUFFER in the
  7. ** Screen.
  8. */
  9.  
  10. MODULE 'gms/dpkernel','gms/dpkernel/dpkernel','gms/graphics/pictures'
  11. MODULE 'gms/files/files','gms/screens','gms/system/register','gms/system/modules'
  12. MODULE 'gms/input/joydata','gms/graphics/screens','gms/graphics/blitter'
  13.  
  14. PROC main()
  15.  
  16.   DEF picture:PTR TO picture, screen:PTR TO screen, joydata:PTR TO joydata
  17.   DEF picfile:filename, scrmodule:PTR TO module
  18.  
  19.   picfile := [ ID_FILENAME, 'GMS:demos/data/PIC.Green' ]:filename
  20.  
  21.   IF dpkbase := OpenLibrary('GMS:libs/dpkernel.library',0)
  22.  
  23.     IF (scrmodule := Init([TAGS_MODULE,NIL,
  24.         MODA_NUMBER,    MOD_SCREENS,
  25.         MODA_TABLETYPE, JMP_AMIGAE,
  26.         TAGEND], NIL))
  27.  
  28.       scrbase := scrmodule.modbase
  29.  
  30.       IF (picture := Load(picfile, ID_PICTURE))
  31.          screen := Get(ID_SCREEN)
  32.          CopyStructure(picture,screen)
  33.          screen.attrib  := SCR_DBLBUFFER OR SCR_CENTRE
  34.  
  35.          IF (screen := Init(screen,NIL))
  36.             Copy(picture.bitmap,screen.bitmap)
  37.  
  38.             IF (joydata := Init(Get(ID_JOYDATA),NIL))
  39.                Show(screen)
  40.                Query(joydata)
  41.  
  42.                REPEAT
  43.                  WaitAVBL()
  44.                  SwapBuffers(screen)
  45.                  Query(joydata)
  46.                UNTIL (joydata.buttons AND JD_LMB)
  47.  
  48.             Free(joydata)
  49.             ENDIF
  50.          Free(picture)
  51.          ENDIF
  52.       Free(screen)
  53.       ENDIF
  54.     Free(scrmodule)
  55.     ENDIF
  56.    CloseDPK()
  57.    ENDIF
  58. ENDPROC
  59.  
  60.